ostbuild: Fix DB saving with /tmp and builddir in different volumes
authorAdrian Perez <aperez@igalia.com>
Thu, 26 Apr 2012 15:21:27 +0000 (18:21 +0300)
committerColin Walters <walters@verbum.org>
Fri, 4 May 2012 20:16:16 +0000 (16:16 -0400)
This fixes the case where /tmp resides in one volume, and the build
directory in a different one: by storing the temporary file in the
same directory as the target one, we avoid the case in which os.rename()
would cross file system boundaries.

Reviewed-by: Colin Walters <walters@verbum.org>
src/ostbuild/pyostbuild/jsondb.py

index aecee35981ea7aed8c281fb8b38bba7cc19f53c1..6d7906e44af6e357ced9a1209609d3dd904383ac 100644 (file)
@@ -79,7 +79,8 @@ class JsonDB(object):
 
         current_time = time.gmtime()
 
-        (fd, tmppath) = tempfile.mkstemp(suffix='.tmp', prefix='tmp-jsondb-')
+        (fd, tmppath) = tempfile.mkstemp(suffix='.tmp',
+                prefix='tmp-jsondb-', dir=self._dirpath)
         os.close(fd)
         f = open(tmppath, 'w')
         json.dump(obj, f, indent=4, sort_keys=True)